package com.tedu.weibo.common.interceptor;

import com.tedu.weibo.pojo.entity.User;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/*
* 当前拦截器的作用是检测是否登录
* 如果没有登录则不允许后续操作，直接跳转回首页
* */
public class CheckLogininInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        /*
        * preHandle是在进入Controller对应方法之前执行
        * 因此我们可以在这里检测该用户是否已经登录，如果没有登录则直接跳转首页，否则才放行
        * */
        //Session会话对象可以直接通过请求对象获取到
        HttpSession session = request.getSession();
        //通过session获取登录信息
        User user = (User) session.getAttribute("user");
        if(user==null){//未登录状态
            /*
            * 使用响应对象，要求浏览器重新请求下述路径
            * 之后返回false，通知SpringMVC框架不要继续向后流传流程到Controller了，
            * 此时框架会将响应交给Tomcat，而Tomcat会将响应发送给浏览器
            *
            * 浏览器接收到响应后发现要求重新定向到：/index.html后自动请求该页面了
            * */
            response.sendRedirect("/index.html");
            return false;
        }else {
            return true;
        }
    }
}




















